package com.gzdh.dishrecognition.util;

import java.math.BigDecimal;

public class OperaBigDec {

	/**
	 * 判断big1是否大于或者等于big2
	 * 
	 * @param big1
	 * @param big2
	 * @return
	 */
	public static boolean greaterOrEqual(BigDecimal big1, BigDecimal big2) {
		boolean status = false;
		if (big1 == null || big2 == null) {
			return false;
		}
		if (big1.compareTo(big2) > 0) {
			status = true;
		} else if (big1.compareTo(big2) == 0) {
			status = true;
		}
		return status;
	}

	/**
	 * 判断big1是否小于或者等于big2
	 * 
	 * @param big1
	 * @param big2
	 * @return
	 */
	public static boolean lessOrEqual(BigDecimal big1, BigDecimal big2) {
		boolean status = false;
		if (big1 == null || big2 == null) {
			return false;
		}
		if (big1.compareTo(big2) == -1) {
			status = true;
		} else if (big1.compareTo(big2) == 0) {
			status = true;
		}
		return status;
	}

	public static boolean Equal(BigDecimal big1, BigDecimal big2) {
		boolean status = false;
		if (big1 == null || big2 == null) {
			return false;
		}
		if (big1.compareTo(big2) == 0) {
			status = true;
		}
		return status;
	}

	/**
	 * 将卡上的金额除100，再将字符串转换为计算变量。
	 * 
	 * 将转换后的卡片金额减去当前金额，返回以元为单位的BigDecimal；
	 * 
	 * @param cardPrice
	 * @param strPrice
	 * @return
	 */
	public static BigDecimal cardHundredSubtractNotHundredToSys(long cardPrice, String strPrice) {
		BigDecimal big = new BigDecimal(0.0);
		BigDecimal cardPriceBig = BigDecimal.valueOf(cardPrice).divide(BigDecimal.valueOf(100), 2,
				BigDecimal.ROUND_HALF_UP);
		double strPriceDouble = Double.parseDouble(strPrice);
		big = cardPriceBig.subtract(BigDecimal.valueOf(strPriceDouble));
		return big;
	}

	/**
	 * 
	 * 当前操作为<加> 操作
	 * 
	 * 将卡上金额转为计算单位，将字符串转换成BigDecimal，并乘100，和卡片金额一致 并且和cardinfo的单位保持一致
	 * 
	 * 
	 * 将当前金额加上字符串转换后的金额，返回整形变量。
	 * 
	 * 时间: 2019-08-13
	 * 
	 * @param cardPrice
	 * @param strPrice
	 * @return
	 */
	public static int cardHundredAddNotHundredToCard(long cardPrice, String strPrice) {
		BigDecimal cardPriceBig = BigDecimal.valueOf(cardPrice);
		double strPriceDouble = Double.parseDouble(strPrice);
		BigDecimal big = BigDecimal.valueOf(strPriceDouble).multiply(BigDecimal.valueOf(100.0));
		return cardPriceBig.add(big).intValue();
	}

	/**
	 * 
	 * 当前操作为<加> 操作
	 * 
	 * 将卡上金额转为计算单位，将字符串转换成BigDecimal，并乘100，和卡片金额一致 并且和cardinfo的单位保持一致
	 * 
	 * 
	 * 将当前金额加上字符串转换后的金额，返回整形变量。
	 * 
	 * 时间: 2019-08-13
	 * 
	 * @param cardPrice
	 * @param bigPrice
	 * @return
	 */
	public static int cardHundredAddNotHundredToCard(long cardPrice, BigDecimal bigPrice) {
		return cardHundredAddNotHundredToCard(cardPrice, bigPrice.toPlainString());
	}

	/**
	 * 
	 * 当前操作为<减> 操作
	 * 
	 * 将卡上金额转为计算单位，将字符串转换成BigDecimal，并乘100，和卡片金额一致 并且和cardinfo的单位保持一致
	 * 
	 * 
	 * 将当前金额加上字符串转换后的金额，返回整型变量。
	 * 
	 * 时间: 2019-08-13
	 * 
	 * @param cardPrice
	 * @param strPrice
	 * @return
	 */
	public static int cardHundredSubtractNotHundredToCard(long cardPrice, String strPrice) {
		BigDecimal cardPriceBig = BigDecimal.valueOf(cardPrice);
		double strPriceDouble = Double.parseDouble(strPrice);
		BigDecimal big = BigDecimal.valueOf(strPriceDouble).multiply(BigDecimal.valueOf(100.0));
		return cardPriceBig.subtract(big).intValue();
	}

	/**
	 * 两个字符串相加，返回字符串格式
	 * 
	 * @param price1
	 * @param price2
	 * @return
	 */
	public static String getTwoStringAddToString(String price1, String price2) {
		if (price1 == null || price2 == null)
			return null;
		return BigDecimal.valueOf(Double.parseDouble(price1)).add(BigDecimal.valueOf(Double.parseDouble(price2)))
				.toString();
	}

	/**
	 * 将卡片的金额转换为字符串金额
	 * 
	 * 
	 * 时间：2019-08-13
	 *
	 * @param cardPrice
	 * @return
	 */
	public static String cardDivideHundredOfStr(long cardPrice) {
		BigDecimal cardPriceBig = BigDecimal.valueOf(cardPrice);
		return cardPriceBig.divide(BigDecimal.valueOf(100), 2, BigDecimal.ROUND_HALF_UP).toPlainString();
	}

	/**
	 * 将卡片的金额转换为字符串金额
	 * 
	 * 
	 * 时间：2019-08-13
	 *
	 * @param cardPrice
	 * @return
	 */
	public static BigDecimal cardDivideHundredOfBig(long cardPrice) {
		BigDecimal cardPriceBig = BigDecimal.valueOf(cardPrice);
		return cardPriceBig.divide(BigDecimal.valueOf(100), 2, BigDecimal.ROUND_HALF_UP);
	}
}
